﻿#pragma once
#include "Devices.h"

// SerialThread

class SerialThread
{
public:
	SerialThread();           // 动态创建所使用的受保护的构造函数
	~SerialThread();

public:
	HANDLE thisThread;
	void* threadData = 0;
	DeviceID device;
	CString COMX = L"COM1";
	int bdr = 115200;
	int stp = 0;
	int prt = 0;
	DCB dcb;
	HANDLE hdlSerial;
	CHAR buffer[4096] = { 0 };		// 数据缓冲区
	int numChanel = 1;				// GNSS数据类型数
	BOOL getHead[3] = { 0 };			// 帧头匹配标志
	CHAR head[3][16] = { 0 };		// 帧头参数
	CHAR initcmd[512] = { 0 };		// GNSS初始指令
	UINT headlen;					// 帧头长度
	UINT pkglen;						// IMU数据包长度
	UINT GNSSpkglen;					// GNSS数据包长度
	DWORD wCount;					// 没用
	GNSSTask task;					// GNSS数据任务标志
	FLOAT ts;						// 采样时间
	UINT fps;						// 数据图像刷新率

	void setPortName(int i);
	void setBaudrate(int bdr);
	void setStopbit(int i);
	void setParity(int i);
	void setIMUDevice(DeviceID);
	void setGNSSDevice(DeviceID, GNSSTask);
	BOOL openPort();
	BOOL closePort();
	BOOL findHead();
	BOOL readPkg();
	BOOL findGNSSHead();
	BOOL readGNSSPkg();

	// 接收机初始化
	BOOL sendReceiverCMD();
};


